/**
 * 初始化请求参数
 */
let requestParam = getDefaultTemplate();


/**
 * 获取默认模板
 */
let getDefaultTemplate = function () {
    return {
        data: {
            and: [],
            or: []
        },
        pageNumber: 1,
        pageSize: 10
    };
}

/**
 * 搜索值改变
 */
let valueChange = (column, value) => {
    // 获取字段的操作符
    let operatorCode = column.searchSetting.operatorCode;
    // 获取字段的值
    let valueNew = value;
    // 查找and中是否有相同的字段
    let index = requestParam.data.and.findIndex(item => item.field === column.field);

    // 如果有相同的字段
    if (index !== -1) {
        // 更新值
        requestParam.data.and[index].value = valueNew
    } else {
        // 如果没有相同的字段，就添加一个新的字段
        requestParam.data.and.push({
            // 操作符
            operatorCode: operatorCode,
            // 字段
            field: column.field,
            // 值
            value: valueNew
        });
    }
}

/**
 * 获取请求参数
 */
let getRequestParam = () => {
    let requestParamIn = JSON.parse(JSON.stringify(this.requestParam));
    // 比如有一个字段是空的，就删除这个字段
    requestParamIn.data.and = requestParamIn.data.and.filter(
        item => item.value !== ''
            && item.value !== null
            && item.value !== undefined
            && item.value !== []);
    return requestParamIn;
}

export default {
    getDefaultTemplate,
    valueChange,
    getRequestParam
}